![]() |
Java Database Programming with JDBC
by Pratik Patel Coriolis, The Coriolis Group ISBN: 1576100561 Pub Date: 10/01/96 |
Previous | Table of Contents | Next |
As I mentioned at the beginning of this chapter, the JDBC is two-dimensional. The reasoning for the split is to separate the low-level programming from the high-level application interface. The low-level programming is the JDBC driver. The idea is that database vendors and third-party software vendors will supply pre-built drivers for connecting to different databases. JDBC drivers are quite flexible: They can be local data sources or remote database servers. The implementation of the actual connection to the data source/database is left entirely to the JDBC driver.
The structure of the JDBC includes these key concepts:
Figure 1.1 shows the architecture of the JDBC. The DriverManager class is used to open a connection to a database via a JDBC driver, which must register with the DriverManager before the connection can be formed. When a connection is attempted, the DriverManager chooses from a given list of available drivers to suit the explict type of database connection. After a connection is formed, the calls to query and fetch results are made directly with the JDBC driver. The JDBC driver must implement the classes to process these functions for the specific database, but the rigid specification of the JDBC ensures that the drivers will perform as expected. Essentially, the developer who has JDBC drivers for a certain database does not need to worry about changing the code for the Java program if a different type of database is used (assuming that the JDBC driver for the other database is available). This is especially useful in the scenario of distributed databases.
Figure 1.1 The architecture of the JDBC.
The JDBC uses a URL syntax for specifying a database. For example, a connection to a mSQL database, which was used to develop some of the Java applets in this book, is:
jdbc:msql://mydatabase.server.com:1112/testdb
This statement specifies the transport to use (jdbc), the database type (msql), the server name, the port (1112), and the database to connect to (testdb). Well discuss specifying a database more thoroughly in Chapter 3.
The data types in SQL are mapped into native Java types whenever possible. When a native type is not present in Java, a class is available for retrieving data of that type. Consider, for example, the Date type in the JDBC. A developer can assign a date field in a database to a JDBC Date class, after which the developer can use the methods in the Date class to display or perform operations. The JDBC also includes support for binary large objects, or BLOB data types; you can retreive and store images, sound, documents, and other binary data in a database with the JDBC. In Chapter 6, well cover the SQL data types and their mapping into Java/JDBC, as well object-relational mapping.
The JDBC and ODBC share a common parent: Both are based on the same X/OPEN call level interface for SQL. Though there are JDBC drivers emerging for many databases, you can write database-aware Java programs using existing ODBC drivers. In fact, Javasoft and Intersolv have written a JDBC driverthe JDBC-ODBC Bridgethat allows developers to use exisiting ODBC drivers in Java programs. Figure 1.2 shows the place of the JDBC-ODBC Bridge in the overall architecture of the JDBC. However, the JDBC-ODBC Bridge requires pre-installation on the client, or wherever the Java program is actually running, because the Bridge must make native method calls to do the translation from ODBC to JDBC. This pre-installation issue is also true for JDBC drivers that use native methods. Only 100 percent Java JDBC drivers can be downloaded across a network with a Java applet, thus requiring no pre-installation of the driver.
Figure 1.2 ODBC in the JDBC model.
ODBC drivers function in the same manner as true JDBC drivers; in fact, the JDBC-ODBC bridge is actually a sophisticated JDBC driver that does low-level translation to and from ODBC. When the JDBC driver for a certain database becomes available, you can easily switch from the ODBC driver to the new JDBC driver with few, if any, changes to the code of the Java program.
The JDBC is not only a specification for using data sources in Java applets and applications, but it also allows you to create and use low-level drivers to connect and talk with data sources. You have now explored the JDBC architecture and seen how the ODBC fits into the picture. The important concept to remember about the JDBC is that the modular design of the JDBC interface allows you to change between drivershence databaseswithout recoding your Java programs.
In the next chapter, well take a step back to give you a quick primer on SQL, one of the pillars of the JDBC. If you are already familiar with SQL-92, feel free to skip the chapter. However, I think that you may find the chapter helpful in clarifying the SQL queries performed in the sample JDBC programs we develop in this book.
Previous | Table of Contents | Next |